// 暂时性死区
var a=5
{
    console.log(a)
    let b=8
    console.log(b)
}

// for循环还有一个特别之处，就是设置循环变量的那部分是一个父作用域，而循环体内部是一个单独的子作用域
for(let i=0;i<3;i++){
    let i='abc'
    console.log(i)  //输出三次'abc'
}

// es6块级作用域  es5只有全局作用域和函数作用域
console.log(c) //var有变量提升 所以不报错，输出undefined
var c=100

var tmp=new Date()
function f(){
    console.log(tmp)  //var没有块级作用域导致if内部的tmp变量提升，覆盖了外部的tmp变量，输出undefined
    if(false){
        var tmp='hello world'
    }
}
f()
